home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / Ant Movie Catalog 3.5.0.2 / amc_install.exe / {app} / Scripts / film.pl.ifs < prev    next >
Text File  |  2005-03-13  |  28KB  |  707 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=Goster
  8. Title=film.pl
  9. Description=film.pl info & picture
  10. Site=http://film.pl/
  11. Language=PL
  12. Version=
  13. Requires=3.5.0
  14. Comments= Movie information & picture importation
  15. License=This program is free software; you can redistribute it and/or modify it under the  terms of the GNU General Public License as published by the Free Software Foundation;  either version 2 of the License, or (at your option) any later version. |
  16. GetInfo=1
  17.  
  18. [Options]
  19.  
  20. ***************************************************)
  21.  
  22. program FilmPL;
  23. var
  24.   MovieName, fid: string;
  25.   Link: string;
  26.   pozycja, pozycja2, pozycja3: integer;
  27.   cover, nocover: boolean;
  28.  
  29. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  30.   var
  31.   i: Integer;
  32.   begin
  33.   result := -1;
  34.   if StartAt < 0 then
  35.     StartAt := 0;
  36.   for i := StartAt to List.Count-1 do
  37.     if Pos(Pattern, List.GetString(i)) <> 0 then
  38.       begin
  39.       result := i;
  40.       Break;
  41.       end;
  42.   end;
  43.  
  44. procedure DecodeHTML(var Value: String);
  45.   var
  46.   FullValue, CharCode: String;
  47.   Counter: Integer;
  48.   begin
  49.   if Value <> '' then begin
  50.     FullValue := '';
  51.     Counter := 1;
  52.     repeat
  53.       if StrGet(Value, Counter) <> '&' then
  54.         begin
  55.         CharCode := copy(Value, Counter, 1);
  56.         case CharCode of
  57.           '▒': CharCode := '╣';
  58.           '╢': CharCode := '£';
  59.           'í': CharCode := 'Ñ';
  60.           '╝': CharCode := 'ƒ';
  61.           'ª': CharCode := 'î';
  62.           '¼': CharCode := 'Å';
  63.           end;
  64.         FullValue := FullValue + CharCode;
  65.         Counter := Counter + 1;
  66.         end
  67.       else
  68.         begin
  69.         CharCode := copy(Value, Counter, 7);
  70.         case CharCode of
  71.           'ą': FullValue := FullValue + '╣';
  72.           'ć': FullValue := FullValue + 'µ';
  73.           'ę': FullValue := FullValue + 'Ω';
  74.           'ł': FullValue := FullValue + '│';
  75.           'ń': FullValue := FullValue + '±';
  76.           'ó': FullValue := FullValue + '≤';
  77.           'ś': FullValue := FullValue + '£';
  78.           'ź': FullValue := FullValue + 'ƒ';
  79.           'ż': FullValue := FullValue + '┐';
  80.           'Ą': FullValue := FullValue + 'Ñ';
  81.           'Ć': FullValue := FullValue + '╞';
  82.           'Ę': FullValue := FullValue + '╩';
  83.           'Ł': FullValue := FullValue + 'ú';
  84.           'Ń': FullValue := FullValue + '╤';
  85.           'Ó': FullValue := FullValue + '╙';
  86.           'Ś': FullValue := FullValue + 'î';
  87.           'Ź': FullValue := FullValue + 'Å';
  88.           'Ż': FullValue := FullValue + '»';
  89.           'Š': FullValue := FullValue + ' ';
  90.           'š': FullValue := FullValue + 'í';
  91.           'Ţ': FullValue := FullValue + 'í';
  92.           'ţ': FullValue := FullValue + 'ú';
  93.           'Ť': FullValue := FullValue + 'ñ';
  94.           'ť': FullValue := FullValue + 'Ñ';
  95.           'Ŧ': FullValue := FullValue + 'î';
  96.           'ŧ': FullValue := FullValue + 'º';
  97.           'Ũ': FullValue := FullValue + '¿';
  98.           'ũ': FullValue := FullValue + '⌐';
  99.           'Ű': FullValue := FullValue + '¬';
  100.           'ű': FullValue := FullValue + '½';
  101.           'Ų': FullValue := FullValue + '¼';
  102.           'ų': FullValue := FullValue + '¡';
  103.           'Ŵ': FullValue := FullValue + '«';
  104.           'ŵ': FullValue := FullValue + '»';
  105.           'Ŷ': FullValue := FullValue + '░';
  106.           'ŷ': FullValue := FullValue + '▒';
  107.           'Ÿ': FullValue := FullValue + '▓';
  108.           'ƀ': FullValue := FullValue + '┤';
  109.           'Ɓ': FullValue := FullValue + '╡';
  110.           'Ƃ': FullValue := FullValue + '╢';
  111.           'ƃ': FullValue := FullValue + '╖';
  112.           'Ƅ': FullValue := FullValue + '╕';
  113.           'ƅ': FullValue := FullValue + '╣';
  114.           'Ɔ': FullValue := FullValue + '║';
  115.           'Ƈ': FullValue := FullValue + '╗';
  116.           'ƈ': FullValue := FullValue + '╝';
  117.           'Ɖ': FullValue := FullValue + '╜';
  118.           'Ɛ': FullValue := FullValue + '╛';
  119.           'Ƒ': FullValue := FullValue + '┐';
  120.           'ƒ': FullValue := FullValue + '└';
  121.           'Ɠ': FullValue := FullValue + '┴';
  122.           'Ɣ': FullValue := FullValue + '┬';
  123.           'ƕ': FullValue := FullValue + '├';
  124.           'Ɩ': FullValue := FullValue + '─';
  125.           'Ɨ': FullValue := FullValue + '┼';
  126.           'Ƙ': FullValue := FullValue + '╞';
  127.           'ƙ': FullValue := FullValue + '╟';
  128.           'Ȁ': FullValue := FullValue + '╚';
  129.           'ȁ': FullValue := FullValue + '╔';
  130.           'Ȃ': FullValue := FullValue + '╩';
  131.           'ȃ': FullValue := FullValue + '╦';
  132.           'Ȅ': FullValue := FullValue + '╠';
  133.           'ȅ': FullValue := FullValue + '═';
  134.           'Ȇ': FullValue := FullValue + '╬';
  135.           'ȇ': FullValue := FullValue + '╧';
  136.           'Ȉ': FullValue := FullValue + '╨';
  137.           'ȉ': FullValue := FullValue + '╤';
  138.           'Ȑ': FullValue := FullValue + '╥';
  139.           'ȑ': FullValue := FullValue + '╙';
  140.           'Ȓ': FullValue := FullValue + '╘';
  141.           'ȓ': FullValue := FullValue + '╒';
  142.           'Ȕ': FullValue := FullValue + '╓';
  143.           'ȕ': FullValue := FullValue + '╫';
  144.           'Ȗ': FullValue := FullValue + '╪';
  145.           'ȗ': FullValue := FullValue + '┘';
  146.           'Ș': FullValue := FullValue + '┌';
  147.           'ș': FullValue := FullValue + '█';
  148.           'Ƞ': FullValue := FullValue + '▄';
  149.           'ȡ': FullValue := FullValue + '▌';
  150.           'Ȣ': FullValue := FullValue + '▐';
  151.           'ȣ': FullValue := FullValue + '▀';
  152.           'Ȥ': FullValue := FullValue + 'α';
  153.           'ȥ': FullValue := FullValue + 'ß';
  154.           'Ȧ': FullValue := FullValue + 'Γ';
  155.           'ȧ': FullValue := FullValue + 'π';
  156.           'Ȩ': FullValue := FullValue + 'Σ';
  157.           'ȩ': FullValue := FullValue + 'σ';
  158.           'Ȱ': FullValue := FullValue + 'µ';
  159.           'ȱ': FullValue := FullValue + 'τ';
  160.           'Ȳ': FullValue := FullValue + 'Φ';
  161.           'ȳ': FullValue := FullValue + 'Θ';
  162.           'ȴ': FullValue := FullValue + 'Ω';
  163.           'ȵ': FullValue := FullValue + 'δ';
  164.           'ȶ': FullValue := FullValue + '∞';
  165.           'ȷ': FullValue := FullValue + 'φ';
  166.           'ȸ': FullValue := FullValue + 'ε';
  167.           'ȹ': FullValue := FullValue + '∩';
  168.           'ɀ': FullValue := FullValue + '≡';
  169.           'Ɂ': FullValue := FullValue + '±';
  170.           'ɂ': FullValue := FullValue + '≥';
  171.           'Ƀ': FullValue := FullValue + '≤';
  172.           'Ʉ': FullValue := FullValue + '⌠';
  173.           'Ʌ': FullValue := FullValue + '⌡';
  174.           'Ɇ': FullValue := FullValue + '÷';
  175.           'ɇ': FullValue := FullValue + '≈';
  176.           'Ɉ': FullValue := FullValue + '°';
  177.           'ɉ': FullValue := FullValue + '∙';
  178.           'ɐ': FullValue := FullValue + '·';
  179.           'ɑ': FullValue := FullValue + '√';
  180.           'ɒ': FullValue := FullValue + 'ⁿ';
  181.           'ɓ': FullValue := FullValue + '²';
  182.           'ɔ': FullValue := FullValue + '■';
  183.           'ɕ': FullValue := FullValue + ' ';
  184.           '&#x%DF;': FullValue := FullValue + '▀';
  185.           '4': FullValue := FullValue + '"';
  186.           '–': FullValue := FullValue + '-';
  187.           '‘': FullValue := FullValue + '"';
  188.           '’': FullValue := FullValue + '"';
  189.           '“': FullValue := FullValue + '"';
  190.           '”': FullValue := FullValue + '"';
  191.           '„': FullValue := FullValue + '"';
  192.           else
  193.             FullValue := FullValue + CharCode;
  194.           end;
  195.         Counter := Counter + 7;
  196.       end;
  197.     until Counter > Length(Value);
  198.     HTMLDecode(FullValue);
  199.     Value := FullValue;
  200.     end
  201.   end;
  202.  
  203. procedure AnalyzePage();
  204.   var
  205.   Page: TStringList;
  206.   pozycja, startPos, endPos: integer;
  207.   linia, adres, tytul: string;
  208.   
  209.   begin
  210.   Page := TStringList.Create;
  211.   PickTreeClear;
  212.   link := URLEncode('http://film.pl/modules.php?op=reviews&name=FilmPl_Recenzje&litera=' + MovieName);
  213.   Page.Text := GetPage(link);
  214.   pozycja := FindLine('0 recenzji', Page, 0);
  215.   if pozycja > 0 then
  216.    begin
  217.    DecodeHTML(MovieName);
  218.    ShowMessage('Nie znaleziono ┐adnego filmu spe│niaj╣cego kryteria: "'+MovieName+'".');
  219.    end
  220.   else 
  221.    begin;
  222.    pozycja := FindLine('recenzji', Page, 0);
  223.    repeat
  224.     begin
  225.     pozycja := FindLine('<a href="modules.php?name=FilmPl_Recenzje&rop=showcontent&id=', Page, pozycja + 1);
  226.     if (pozycja > -1) then
  227.      begin
  228.      linia := Page.GetString(pozycja);
  229.      startPos := pos('id=', Linia);
  230.      endPos := pos('">', Linia);
  231.      link := 'http://film.pl/modules.php?name=FilmPl_Recenzje&rop=showcontent&id=' + copy(linia, startPos + 3, endPos - startPos -3); 
  232.      adres := URLEncode(link);
  233.      linia := Page.GetString(pozycja + 1);
  234.      linia := copy(linia, pos('» ', linia) + 6, length(linia));
  235.      HTMLRemoveTags(linia);
  236.      DecodeHTML(linia);  
  237.      tytul := linia;
  238.      linia := Page.GetString(pozycja + 2);
  239.      HTMLRemoveTags(linia);
  240.      DecodeHTML(linia);
  241.      tytul := tytul +' ' + linia; 
  242.      linia := Page.GetString(pozycja + 3);
  243.      HTMLRemoveTags(linia);
  244.      DecodeHTML(linia);
  245.      tytul := tytul +' ' + linia;  
  246.      linia := Page.GetString(pozycja + 4);
  247.      HTMLRemoveTags(linia);
  248.      DecodeHTML(linia);
  249.      tytul := tytul +' ' + linia;  
  250.      linia := Page.GetString(pozycja + 5);
  251.      HTMLRemoveTags(linia);
  252.      DecodeHTML(linia);
  253.      tytul := tytul +' ' + linia;       
  254.      while ((copy(tytul, 1, 1) = '    ') or (copy(tytul, 1, 1) = ' ') or (copy(tytul, 1, 1) = 'á')) do delete(tytul, 1, 1);
  255.      while ((copy(tytul, length(tytul), 1) = '    ') or (copy(tytul, length(tytul), 1) = ' ') or (copy(tytul, length(tytul), 1) = 'á')) do delete(tytul, length(tytul), 1); 
  256.      PickTreeAdd(tytul, adres);
  257.      end;
  258.     end;
  259.    until (pozycja = -1);     
  260.    end;   
  261.    if PickTreeExec(adres) then
  262.    begin
  263.     Page.Text := GetPage(adres);
  264.     link := adres;
  265.     AnalyzeMoviePage(page);
  266.     end;
  267.   Page.Free;
  268.   end;
  269.  
  270. procedure AnalyzeMoviePage(Page: TStringList);
  271.   var
  272.   Linia, tytul, line, Obsada, OrgLine, adres: string;
  273.   LineNr, licznik: Integer;
  274.   StartPos, EndPos, i: Integer;
  275.   begin
  276.  
  277.   if cover = false then
  278.   begin 
  279.   
  280.   //recenzja i ocena
  281.   pozycja := FindLine('Ocena filmu:', Page, 0);
  282.   linia := Page.GetString(pozycja);  
  283.   startPos := pos('alt="', linia);
  284.   if startPos > 0 then
  285.    begin
  286.    delete(linia, 1, startPos + 4);
  287.    endPos := pos('">', linia);
  288.    tytul :=  copy(linia, 1, endPos - 1);
  289.    setField(fieldRating, tytul);
  290.    end;
  291.   pozycja := pozycja + 1;
  292.   tytul := '';
  293.   repeat
  294.    begin
  295.    linia := Page.GetString(pozycja);
  296.    HTMLRemoveTags(linia);
  297.    while ((copy(linia, 1, 1) = '    ') or (copy(linia, 1, 1) = ' ') or (copy(linia, 1, 1) = 'á')) do delete(linia, 1, 1);
  298.    DecodeHTML(linia);
  299.    if (linia = '') then pozycja := pozycja +1;
  300.    end;
  301.   until (linia <> ''); 
  302.   pozycja2 := FindLine('rednia ocena recenzji', Page, 0);
  303.   repeat
  304.    begin
  305.    linia := Page.GetString(pozycja);
  306.    if linia <> '' then 
  307.     begin
  308.     while ((copy(linia, 1, 1) = '    ') or (copy(linia, 1, 1) = ' ') or (copy(linia, 1, 1) = 'á')) do delete(linia, 1, 1); 
  309.     while ((copy(linia, length(linia), 1) = '    ') or (copy(linia, length(linia), 1) = ' ') or (copy(linia,  length(linia), 1) = 'á')) do delete(linia, length(linia), 1);   
  310.     end;
  311.    if (linia = '') then
  312.     begin
  313.     pozycja := pozycja + 1;
  314.     linia := Page.GetString(pozycja);
  315.     end;
  316.    HTMLRemoveTags(linia);
  317.    DecodeHTML(linia);
  318.    while ((copy(linia, 1, 1) = '    ') or (copy(linia, 1, 1) = ' ') or (copy(linia, 1, 1) = 'á')) do delete(linia, 1, 1); 
  319.    while ((copy(linia, length(linia), 1) = '    ') or (copy(linia, length(linia), 1) = ' ') or (copy(linia,  length(linia), 1) = 'á')) do delete(linia, length(linia), 1);
  320.    tytul := tytul + ' ' + linia;
  321.    pozycja := pozycja + 1;
  322.    end;
  323.   until (pozycja >= pozycja2);
  324.   while ((copy(tytul, length(tytul), 1) = '    ') or (copy(tytul, length(tytul), 1) = ' ') or (copy(tytul,  length(tytul), 1) = 'á')) do delete(tytul, length(tytul), 1);
  325.   while ((copy(tytul, 1, 1) = '    ') or (copy(tytul, 1, 1) = ' ') or (copy(tytul, 1, 1) = 'á')) do delete(tytul, 1, 1);
  326.   if (tytul <> '') then setField(fieldComments, tytul);  
  327.   
  328.    //pobranie strony z opisem
  329.   pozycja := FindLine('>Opis<', Page, 0);
  330.   linia := Page.GetString(pozycja);
  331.   startPos := pos('fid=', linia);
  332.   delete(linia, 1, startPos + 3);
  333.   endPos := pos('">Opis', linia);
  334.   fid := copy(linia, 1, endPos - 1);
  335.   link := URLEncode('http://film.pl/modules.php?name=AboutFilm&file=credits&fid=' + fid);
  336.   Page.Text := GetPage(link);
  337.   
  338.   // Tytu│ polski i oryginalny
  339.   pozycja := FindLine('<!-- menu gorne -->', Page, 0);
  340.   pozycja := FindLine('<!-- menu gorne -->', Page, pozycja + 1);
  341.   repeat
  342.    begin
  343.    linia := Page.GetString(pozycja);
  344.    HTMLRemoveTags(linia);
  345.    DecodeHTML(linia);
  346.    setField(fieldDescription, linia);
  347.    while ((copy(linia, 1, 1) = '    ') or (copy(linia, 1, 1) = ' ') or (copy(linia, 1, 1) = 'á')) do delete(linia, 1, 1);
  348.    if (linia = '') then pozycja := pozycja +1;
  349.    end;
  350.   until (linia <> ''); 
  351.   startPos := pos('(', linia);
  352.   endPos := pos(')', linia);
  353.   if ((startPos = 0) and (endPos = 0)) then
  354.    begin
  355.    tytul := copy(linia, 1, length(linia));
  356.    if pos(', The ', tytul) > 0 then tytul := StringReplace(tytul, ', The', '');   
  357.    if pos('The ', tytul) > 0 then tytul := StringReplace(tytul, 'The', '');
  358.    while ((copy(tytul, 1, 1) = '    ') or (copy(tytul, 1, 1) = ' ')) do delete(tytul, 1, 1);
  359.    while ((copy(tytul, length(tytul), 1) = '    ') or (copy(tytul, length(tytul), 1) = ' ')) do delete(tytul, length(tytul), 1);
  360.    setField(fieldTranslatedTitle, tytul);
  361.    setField(fieldOriginalTitle, tytul);
  362.    end
  363.   else
  364.    begin  
  365.    tytul := copy(linia, 1, startPos - 1);
  366.    if pos(', The ', tytul) > 0 then tytul := StringReplace(tytul, ', The', '');
  367.    if pos('The ', tytul) > 0 then tytul := StringReplace(tytul, 'The', '');
  368.    while ((copy(tytul, 1, 1) = '    ') or (copy(tytul, 1, 1) = ' ')) do delete(tytul, 1, 1);
  369.    while ((copy(tytul, length(tytul), 1) = '    ') or (copy(tytul, length(tytul), 1) = ' ')) do delete(tytul, length(tytul), 1);
  370.    setField(fieldTranslatedTitle, tytul);
  371.    tytul := copy(linia, startPos + 1, endPos - startPos - 1);
  372.    if pos(', The ', tytul) > 0 then tytul := StringReplace(tytul, ', The', '');
  373.    if pos('The ', tytul) > 0 then tytul := StringReplace(tytul, 'The', '');
  374.    while ((copy(tytul, 1, 1) = '    ') or (copy(tytul, 1, 1) = ' ')) do delete(tytul, 1, 1);
  375.    while ((copy(tytul, length(tytul), 1) = '    ') or (copy(tytul, length(tytul), 1) = ' ')) do delete(tytul, length(tytul), 1);
  376.    setField(fieldOriginalTitle, tytul);
  377.    end;
  378.   
  379.   // Opis filmu
  380.   tytul := '';
  381.   pozycja := pozycja + 1;
  382.   repeat
  383.    begin
  384.    linia := Page.GetString(pozycja);
  385.    HTMLRemoveTags(linia);
  386.    DecodeHTML(linia);
  387.    while ((copy(linia, 1, 1) = '    ') or (copy(linia, 1, 1) = ' ') or (copy(linia, 1, 1) = 'á')) do delete(linia, 1, 1);
  388.    if (linia = '') then pozycja := pozycja +1;
  389.    end;
  390.   until (linia <> ''); 
  391.   pozycja2 := FindLine('Gatunek', Page, 0);
  392.   repeat
  393.    begin
  394.    linia := Page.GetString(pozycja);
  395.    HTMLRemoveTags(linia);
  396.    DecodeHTML(linia);
  397.    while ((copy(linia, 1, 1) = '    ') or (copy(linia, 1, 1) = ' ') or (copy(linia, 1, 1) = 'á')) do delete(linia, 1, 1);
  398.    while ((copy(linia, length(linia), 1) = '    ') or (copy(linia, length(linia), 1) = ' ') or (copy(linia, length(linia), 1) = 'á')) do delete(linia, length(linia), 1); 
  399.    tytul := tytul + linia;
  400.    pozycja := pozycja + 1;
  401.    end;
  402.   until (pozycja >= pozycja2);
  403.   while ((copy(tytul, 1, 1) = '    ') or (copy(tytul, 1, 1) = ' ')) do delete(tytul, 1, 1);
  404.   while ((copy(tytul, length(tytul), 1) = '    ') or (copy(tytul, length(tytul), 1) = ' ')) do delete(tytul, length(tytul), 1);
  405.   setField(fieldDescription, tytul);
  406.  
  407.   // Gatunek
  408.   pozycja := FindLine('Gatunek', Page, 0);
  409.   if pozycja > -1 then
  410.    begin
  411.    pozycja := pozycja + 1;
  412.    repeat
  413.     begin
  414.     linia := Page.GetString(pozycja);
  415.     HTMLRemoveTags(linia);
  416.     DecodeHTML(linia);
  417.     while ((copy(linia, 1, 1) = '    ') or (copy(linia, 1, 1) = ' ') or (copy(linia, 1, 1) = 'á')) do delete(linia, 1, 1);
  418.     if (linia = '') then pozycja := pozycja +1;
  419.     end;
  420.    until (linia <> ''); 
  421.    linia := Page.GetString(pozycja);
  422.    HTMLRemoveTags(linia);
  423.    DecodeHTML(linia);
  424.    while ((copy(linia, 1, 1) = '    ') or (copy(linia, 1, 1) = ' ') or (copy(linia, 1, 1) = 'á')) do delete(linia, 1, 1);
  425.    while ((copy(linia, length(linia), 1) = '    ') or (copy(linia, length(linia), 1) = ' ') or (copy(linia, length(linia), 1) = 'á')) do delete(linia, length(linia), 1);    
  426.    setField(fieldCategory, linia);   
  427.    end;  
  428.   
  429.   //Re┐yser
  430.   pozycja := FindLine('Re┐yseria', Page, 0);
  431.   tytul := '';
  432.   if pozycja > -1 then
  433.    begin
  434.    pozycja := pozycja + 1;
  435.    repeat
  436.     begin
  437.     linia := Page.GetString(pozycja);
  438.     HTMLRemoveTags(linia);
  439.     DecodeHTML(linia);
  440.     while ((copy(linia, 1, 1) = '    ') or (copy(linia, 1, 1) = ' ') or (copy(linia, 1, 1) = 'á')) do delete(linia, 1, 1);
  441.     if (linia = '') then pozycja := pozycja +1;
  442.     end;
  443.    until (linia <> ''); 
  444.   pozycja2 := FindLine('Scenariusz', Page, 0);
  445.   if pozycja2 = -1 then pozycja2 := FindLine('Obsada', Page, 0);
  446.   if pozycja2 = -1 then pozycja2 := FindLine('ZdjΩcia', Page, 0);
  447.   repeat
  448.    begin
  449.    linia := Page.GetString(pozycja);
  450.    HTMLRemoveTags(linia);
  451.    DecodeHTML(linia);
  452.    while ((copy(linia, 1, 1) = '    ') or (copy(linia, 1, 1) = ' ') or (copy(linia, 1, 1) = 'á')) do delete(linia, 1, 1);
  453.    while ((copy(linia, length(linia), 1) = '    ') or (copy(linia, length(linia), 1) = ' ') or (copy(linia, length(linia), 1) = 'á')) do delete(linia, length(linia), 1); 
  454.    if linia <> '' then 
  455.     begin
  456.     if tytul = '' then tytul := linia
  457.     else tytul := tytul + ', ' + linia;
  458.     end;
  459.    pozycja := pozycja + 1;
  460.    end;
  461.   until (pozycja >= pozycja2);
  462.   while ((copy(tytul, 1, 1) = '    ') or (copy(tytul, 1, 1) = ' ')) do delete(tytul, 1, 1);
  463.   while ((copy(tytul, length(tytul), 1) = '    ') or (copy(tytul, length(tytul), 1) = ' ')) do delete(tytul, length(tytul), 1);
  464.   setField(fieldDirector, tytul);   
  465.    end;
  466.   
  467.     //Obsada
  468.   tytul := '';    
  469.   pozycja := FindLine('Obsada', Page, 0);
  470.   if pozycja > -1 then
  471.    begin
  472.    pozycja := pozycja + 1;
  473.    repeat
  474.     begin
  475.     linia := Page.GetString(pozycja);
  476.     HTMLRemoveTags(linia);
  477.     DecodeHTML(linia);
  478.     while ((copy(linia, 1, 1) = '    ') or (copy(linia, 1, 1) = ' ') or (copy(linia, 1, 1) = 'á')) do delete(linia, 1, 1);
  479.     if (linia = '') then pozycja := pozycja +1;
  480.     end;
  481.    until (linia <> ''); 
  482.   pozycja2 := FindLine('ZdjΩcia', Page, 0);
  483.   if pozycja2 = -1 then pozycja2 := FindLine('Muzyka', Page, 0);
  484.   if pozycja2 = -1 then pozycja2 := FindLine('Scenografia', Page, 0);
  485.   repeat
  486.    begin
  487.    linia := Page.GetString(pozycja);
  488.    HTMLRemoveTags(linia);
  489.    DecodeHTML(linia);
  490.    while ((copy(linia, 1, 1) = '    ') or (copy(linia, 1, 1) = ' ') or (copy(linia, 1, 1) = 'á')) do delete(linia, 1, 1);
  491.    while ((copy(linia, length(linia), 1) = '    ') or (copy(linia, length(linia), 1) = ' ') or (copy(linia, length(linia), 1) = 'á')) do delete(linia, length(linia), 1); 
  492.    if linia <> '' then 
  493.     begin
  494.     if tytul = '' then tytul := linia
  495.     else tytul := tytul + ', ' + linia;
  496.     end;
  497.    pozycja := pozycja + 1;
  498.    end;
  499.   until (pozycja >= pozycja2);
  500.   while ((copy(tytul, 1, 1) = '    ') or (copy(tytul, 1, 1) = ' ')) do delete(tytul, 1, 1);
  501.   while ((copy(tytul, length(tytul), 1) = '    ') or (copy(tytul, length(tytul), 1) = ' ')) do delete(tytul, length(tytul), 1);
  502.   if (pos(', wiΩcej :', tytul) > 0) then delete(tytul,  pos(', wiΩcej :', tytul), length(tytul) - pos(', wiΩcej :', tytul) + 1);
  503.   tytul := StringReplace(tytul, ', jako, ', ' jako ');
  504.   setField(fieldActors, tytul);   
  505.   end;  
  506.    
  507.    //Producent i kraj
  508.   pozycja := -1;
  509.   pozycja := FindLine('Producent', Page, 0);
  510.   if pozycja = -1 then pozycja := FindLine('Dystrybutor', Page, 0);
  511.   if pozycja > -1 then
  512.    begin
  513.    pozycja := pozycja + 1;
  514.    repeat
  515.     begin
  516.     linia := Page.GetString(pozycja);
  517.     HTMLRemoveTags(linia);
  518.     DecodeHTML(linia);
  519.     while ((copy(linia, 1, 1) = '    ') or (copy(linia, 1, 1) = ' ') or (copy(linia, 1, 1) = 'á')) do delete(linia, 1, 1);
  520.     if (linia = '') then pozycja := pozycja +1;
  521.     end;
  522.    until (linia <> ''); 
  523.    linia := Page.GetString(pozycja);
  524.    HTMLRemoveTags(linia);
  525.    DecodeHTML(linia);
  526.    while ((copy(linia, 1, 1) = '    ') or (copy(linia, 1, 1) = ' ') or (copy(linia, 1, 1) = 'á')) do delete(linia, 1, 1);
  527.    while ((copy(linia, length(linia), 1) = '    ') or (copy(linia, length(linia), 1) = ' ') or (copy(linia, length(linia), 1) = 'á')) do delete(linia, length(linia), 1); 
  528.    startPos := pos('(' , linia);
  529.    if  startPos >0 then 
  530.     begin
  531.     endPos := pos(')' , linia); 
  532.     tytul := copy(linia, startPos + 1, endPos - startPos - 1);
  533.     delete(linia, startPos, endPos - startPos + 1);
  534.     setField(fieldCountry, tytul);  
  535.     end;
  536.    setField(fieldProducer, linia);
  537.    end;  
  538.    
  539.   // Rok produkcji
  540.   pozycja := FindLine('Rok', Page, 0);
  541.   if pozycja > -1 then
  542.    begin
  543.    pozycja := pozycja + 1;
  544.    repeat
  545.     begin
  546.     linia := Page.GetString(pozycja);
  547.     HTMLRemoveTags(linia);
  548.     DecodeHTML(linia);
  549.     while ((copy(linia, 1, 1) = '    ') or (copy(linia, 1, 1) = ' ') or (copy(linia, 1, 1) = 'á')) do delete(linia, 1, 1);
  550.     if (linia = '') then pozycja := pozycja +1;
  551.     end;
  552.    until (linia <> ''); 
  553.    linia := Page.GetString(pozycja);
  554.    HTMLRemoveTags(linia);
  555.    DecodeHTML(linia);
  556.    while ((copy(linia, 1, 1) = '    ') or (copy(linia, 1, 1) = ' ') or (copy(linia, 1, 1) = 'á')) do delete(linia, 1, 1);
  557.    while ((copy(linia, length(linia), 1) = '    ') or (copy(linia, length(linia), 1) = ' ') or (copy(linia, length(linia), 1) = 'á')) do delete(linia, length(linia), 1); 
  558.    startPos := pos('(' , linia);
  559.    setField(fieldYear, linia);
  560.    end;  
  561.  
  562.   // Czas trwania
  563.   pozycja := -1;
  564.   pozycja := FindLine('Czas', Page, 0);
  565.   if pozycja > -1 then
  566.    begin
  567.    pozycja := pozycja + 1;
  568.    repeat
  569.     begin
  570.     linia := Page.GetString(pozycja);
  571.     HTMLRemoveTags(linia);
  572.     DecodeHTML(linia);
  573.     while ((copy(linia, 1, 1) = '    ') or (copy(linia, 1, 1) = ' ') or (copy(linia, 1, 1) = 'á')) do delete(linia, 1, 1);
  574.     if (linia = '') then pozycja := pozycja +1;
  575.     end;
  576.    until (linia <> ''); 
  577.    linia := Page.GetString(pozycja);
  578.    HTMLRemoveTags(linia);
  579.    DecodeHTML(linia);
  580.    while ((copy(linia, 1, 1) = '    ') or (copy(linia, 1, 1) = ' ') or (copy(linia, 1, 1) = 'á')) do delete(linia, 1, 1);
  581.    while ((copy(linia, length(linia), 1) = '    ') or (copy(linia, length(linia), 1) = ' ') or (copy(linia, length(linia), 1) = 'á')) do delete(linia, length(linia), 1); 
  582.    startPos := pos(' min' , linia);
  583.    if  startPos >0 then 
  584.     begin
  585.     endPos := pos(' min', linia); 
  586.     linia := copy(linia, 1, endPos - 1);
  587.     end;
  588.    while ((copy(linia, 1, 1) = '    ') or (copy(linia, 1, 1) = ' ') or (copy(linia, 1, 1) = 'á')) do delete(linia, 1, 1);
  589.    while ((copy(linia, length(linia), 1) = '    ') or (copy(linia, length(linia), 1) = ' ') or (copy(linia, length(linia), 1) = 'á')) do delete(linia, length(linia), 1); 
  590.    setField(FieldLength, linia);
  591.    end;  
  592.  
  593.   //URL
  594.   setField(fieldURL, link); 
  595.  
  596.   end; //koniec do bez foto
  597.  
  598.   //Foto 
  599.   if (nocover = false) then
  600.    begin 
  601.    
  602.   //pobranie strony z galeri╣
  603.   link := URLEncode('http://film.pl/modules.php?name=FilmPl_Galerie&op=galeria&fid=' + fid + '&plakat=1');
  604.   Page.Text := GetPage(link);
  605.  
  606.   PickTreeClear;
  607.   PickTreeAdd('Wybierz ZdjΩcie','');
  608.   licznik := 0;
  609.   pozycja := FindLine('Galeria', Page, 0);
  610.   pozycja := pozycja + 1;
  611.   repeat
  612.    begin
  613.    linia := Page.GetString(pozycja);
  614.    HTMLRemoveTags(linia);
  615.    DecodeHTML(linia);
  616.    while ((copy(linia, 1, 1) = '    ') or (copy(linia, 1, 1) = ' ') or (copy(linia, 1, 1) = 'á')) do delete(linia, 1, 1);
  617.    if (linia = '') then pozycja := pozycja +1;
  618.    end;
  619.   until (linia <> ''); 
  620.   pozycja2 := FindLine('Otwarty Katalog Internetowy', Page, pozycja + 1);
  621.   repeat
  622.    begin
  623.    linia := Page.GetString(pozycja);
  624.    startPos := pos(';id=', linia);
  625.    endPos := pos('name=FilmPl_Galerie', linia);
  626.    if ((startPos <> 0)  and (endPos <> 0)) then
  627.     begin
  628.     delete(linia, 1, startPos + 3);
  629.     endPos := pos('&fid=', linia);
  630.     tytul := copy(linia, 1, endPos - 1); 
  631.     licznik := licznik + 1;
  632.     adres := 'http://film.pl/modules.php?name=FilmPl_Galerie&op=zdjecie&id=' + tytul + '&fid=' + fid + '&plakat=1';
  633.     PickTreeAdd(IntToStr(licznik), adres);
  634.     end;
  635.    pozycja := pozycja + 1;
  636.    end;
  637.   until (pozycja >= pozycja2);
  638.   if licznik > 1 then
  639.    begin
  640.    if PickTreeExec(adres) then
  641.     Page.text := GetPage(adres);
  642.    end;
  643.   if licznik = 1 then 
  644.    Page.Text := GetPage(adres); 
  645.  
  646.   pozycja := FindLine('<img src="./images/galeria/', Page, 0); 
  647.   linia := Page.GetString(pozycja);
  648.   startPos := pos('/images/galeria/', linia);
  649.   delete(linia, 1, startPos - 1);
  650.   endPos := pos('.jpg', linia);
  651.   tytul := copy(linia, 1, endPos + 3);
  652.   adres := 'http://film.pl/' + tytul;
  653.   GetPicture(adres); 
  654.    end;   
  655.   
  656.   //DisplayResults;
  657.   end;
  658.  
  659. begin
  660.   if CheckVersion(3,5,0) then
  661.     begin
  662.     MovieName := GetField(fieldTranslatedTitle);
  663.     if MovieName = '' then MovieName := GetField(fieldOriginalTitle);
  664.     if Input('FilmPL Import', 'Podaj tytu│ filmu:', MovieName) then
  665.       begin
  666.       // Zamiana na ISO-8859-2
  667.       MovieName:=StringReplace(MovieName, '╣', chr(177));
  668.       MovieName:=StringReplace(MovieName, 'µ', chr(230));
  669.       MovieName:=StringReplace(MovieName, 'Ω', chr(234));
  670.       MovieName:=StringReplace(MovieName, '│', chr(179));
  671.       MovieName:=StringReplace(MovieName, '±', chr(241));
  672.       MovieName:=StringReplace(MovieName, '≤', chr(243));
  673.       MovieName:=StringReplace(MovieName, '£', chr(182));
  674.       MovieName:=StringReplace(MovieName, 'ƒ', chr(188));
  675.       MovieName:=StringReplace(MovieName, '┐', chr(191));
  676.       MovieName:=StringReplace(MovieName, 'Ñ', chr(161));
  677.       MovieName:=StringReplace(MovieName, '╞', chr(198));
  678.       MovieName:=StringReplace(MovieName, '╩', chr(202));
  679.       MovieName:=StringReplace(MovieName, 'ú', chr(163));
  680.       MovieName:=StringReplace(MovieName, '╤', chr(209));
  681.       MovieName:=StringReplace(MovieName, '╙', chr(211));
  682.       MovieName:=StringReplace(MovieName, 'î', chr(166));
  683.       MovieName:=StringReplace(MovieName, 'Å', chr(172));
  684.       MovieName:=StringReplace(MovieName, '»', chr(175));
  685.       pozycja := pos('/cover/', MovieName); 
  686.       if pozycja > 0 then
  687.        begin
  688.        MovieName := StringReplace(MovieName, '/cover/' , '');
  689.        cover := true;
  690.        end    
  691.       else cover := false;
  692.       pozycja := pos('/nocover/', MovieName); 
  693.       if pozycja > 0 then
  694.        begin
  695.        MovieName := StringReplace(MovieName, '/nocover/' , '');
  696.        nocover := true;
  697.        end    
  698.       else nocover := false;      
  699.       while (copy(MovieName, length(MovieName), 1) = ' ') do delete(MovieName, length(MovieName), 1); 
  700.       while (copy(MovieName, 1, 1) = ' ') do delete(MovieName, 1, 1); 
  701.       AnalyzePage();
  702.       end;
  703.     end
  704.   else
  705.     ShowMessage('Skrypt wymaga programu Ant Movie Catalog w wersji 3.5.0 lub nowszej');
  706. end.
  707.